package login;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import java.io.IOException;

@WebServlet("/login")
public class LoginServlet extends HttpServlet {
    @Override
    protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        // 1. 读取请求传来的参数 (用户名和密码)
        // 最好先设置一下字符集，否则如果 username 是 中文，这里的 getParameter 可能会乱码
        req.setCharacterEncoding("utf8");
        String username  = req.getParameter("username");
        String password = req.getParameter("password");
        // 2. 验证用户名和密码，是否是正确的
        // 这里没有用到数据库，只是自己写死的一个用户名和密码 zhangsan 和 123
        // 此处还要注意，上述 getParameter 可能会拿到 null，为了避免空指针异常
        if(!"zhangsan".equals(username) || !"123".equals(password)) {
            // 登录失败，给用户返回一个提示
            resp.setContentType("text/html; charset=uft8");
            resp.getWriter().write("当前用户名或者密码错误！");
            return;
        }
        // 3. 登录成功，给用户创建一个会话
        // 可以给会话保存一些自定义数据，通过 Attribute 的方式来保存
        // 这里设置为 true，getSession 的工作流程：
        // 拿着用户的sessionId 去 hash 表中找，如果找到了，直接返回
        // 如果找不到，创建一个 session
        // 如果是 false ，找不到则返回 null
        HttpSession session = req.getSession(true);
        session.setAttribute("username", username);
        session.setAttribute("loginTime", System.currentTimeMillis());
        // 4. 此时相当于登录成功，让页面跳转到网站首页
        resp.sendRedirect("index");
    }
}
